package com.camel.core.entity;

import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import org.springframework.util.ObjectUtils;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * 参数
 * @author camel
 */
@Data
public class IParams implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 返回属性列表
     **/
    private String fields;
    /**
     * 分页设定
     **/
    private Integer page;
    /**
     * 每页最大记录数
     **/
    private Integer perPage;
    /**
     * 排序模式
     **/
    private String orderBy;
    /**
     * 过滤条件集合
     **/
    private List<IFilter> filters = new ArrayList<>();

    /**
     * 返回字段列表
     **/
    private String columns;

    /**
     * 分组
     **/
    private String groupBy;

    private String isValid;

    private JSONObject params;

    private boolean all;

    public Integer getPage() {
        return ObjectUtils.isEmpty(page) ? 1 : page;
    }

    public Integer getPerPage() {
        return ObjectUtils.isEmpty(perPage) ? 10 : perPage;
    }

    public boolean hasFilter(String fieldName) {
        for (IFilter filter : getFilters()) {
            if(filter.getFieldName().equals(fieldName)) {
                return true;
            }
        }
        return false;
    }
}
